/*
 * @Description: [ 封装Uniapp缓存 ]
 * @Author: Iseven Monkey <iswoter@gmail.com>
 * @Date: 2023-09-08 10:37:34
 * @LastEditors: Iseven Monkey <iswoter@gmail.com>
 * @LastEditTime: 2023-09-22 14:56:42
 */
export default {
  /**
   * @description: 判断 str 是否为 json 字符串
   * @param {*} str 需要判断的字符串
   * @return {Boolean} 返回布尔值
   */
  isJsonString(str) {
    if (typeof str == "string") {
      try {
        if (typeof JSON.parse(str) == "object") {
          return true;
        }
      } catch (e) {}
    }
    return false;
  },

  /**
   * @description:  设置缓存
   * @param {*} key 键
   * @param {*} value 值
   */
  set(key, value) {
    // 如果 value 不存在，直接返回
    if (!value) {
      return;
    }
    //如果是对象或者数组，转换成json字符串
    if (typeof value === "object" || typeof value === "array") {
      value = JSON.stringify(value);
    }

    uni.setStorageSync(key, value);
  },

  /**
   * @description:  获取缓存
   * @param {*} key 键
   * @return {*|Array|Object} 返回值
   */
  get(key) {
    let value = uni.getStorageSync(key);

    if (!value) {
      return;
    }

    // value为 json 字符串，转换成对象或数组
    if (this.isJsonString(value)) {
      value = JSON.parse(value);
    }

    return value;
  },

  /**
   * @description:  删除缓存
   * @param {*} key 键
   */
  remove(key) {
    uni.removeStorageSync(key);
  },
};
